class opt_feat
{
public:  
    inline opt_feat(const std::string  in_path, 
		    const std::string  in_actionNames, 
		    const std::string  in_feat_path,
		    const int in_col, 
		    const int in_row,
		    const int in_n_cent,
		    const int in_l_segm);
    
    
    inline void clustering_per_action();
    inline void training_svm( std::string model_name, std::string kernel, float gamma, float Cvalue );
    inline void testing_training (std::string model_name); //Testing with Training
    inline void testing_svm(std::string path_multi, std::string model_name);
    

    
double THRESH;
double THRESH_2;

const std::string path;
const std::string actionNames;
const std::string feat_path;

const int row;
const int col;

const int n_samples_tr; //# samples training
const int n_samples_te; //# samples testing

int  N_cent;
int  L_segm;

//std::vector < vec > feat_video_i; not used
std::vector < vec > feat_all_videos_action_i;
//std::vector < mat > diag_covs_all_videos;


field<std::string> actions;
field<std::string> videos;

std::vector< mat > covs;
std::vector <vec> label_multivideo;
rowvec arma_multi_labels;
bool isTesting;


  private:
  inline void feature_video(std::string one_video);
  inline void cov_matrices_video_training(std::string one_video);//covariance features per video
  inline void  cov_matrices_video_testing(std::string one_video);
  inline field <mat> features_video(std::string one_video);
  inline void features_testing_non_overlapping(std::string path_multi);
  inline void svm_predict(std::string model_name);
  inline void features_training();
  inline void svm_model(std::string model_name, std::string kernel, float gamma, float Cvalue);
 
  
};